package top.xia17.plugins.fast.user.model.resp;

import lombok.Data;
import lombok.experimental.Accessors;
import top.xia17.plugins.fast.user.model.enums.MenuType;

import java.util.List;
import java.util.Objects;

/**
 * 菜单显示类
 *
 * @author xia17
 * @date 2022/2/21
 */
@Data
@Accessors(chain = true)
public class MenuVo {

    /**
     * ID
     */
    private Long id;

    /**
     * 菜单标题
     */
    private String title;

    /**
     * 菜单组件名称
     */
    private String componentName;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 组件路径
     */
    private String component;

    /**
     * 路由地址
     */
    private String path;

    /**
     * 菜单类型
     */
    private MenuType type;

    /**
     * 权限标识
     */
    private String permission;

    /**
     * 菜单图标
     */
    private String icon;

    /**
     * 缓存
     */
    private Boolean cache;

    /**
     * 是否隐藏
     */
    private Boolean hidden;

    /**
     * 父ID
     */
    private Long pid;

    /**
     * 子节点数量
     */
    private Integer subCount;

    /**
     * 是否外链菜单
     */
    private Boolean iFrame;

    /**
     * 下级菜单
     */
    private List<MenuVo> children;


    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        MenuVo menuVo = (MenuVo) o;
        return id.equals(menuVo.id);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }
}
